布尔量

一个布尔量,bool,可以具有两个值 truefalse 之一。布尔量用于表示逻辑运算的结果。

例如,

    void f(int a, int b)
    {
        bool b1 = a == b;    // =是赋值,==是相等判断
        // ...
    }

如果 ab 具有相同的值,b1 将变成 true;否则 b1 将变成 false

bool 最常见的使用是作为检查某些条件是否成立的函数(谓词)的结果类型。例如,

    bool is_open(File*);
    bool greater(int a, int b) { return a > b; }

按照定义,true 具有值 1,而 false 具有值 0。与此相对应,整数可以隐式地转换到 bool 值:非零的整数转换为 true,而 0 转换为 false。例如,

    bool b = 7;      // bool(7)是true,所以b变成true
    int i = true;    // int(true)是1,所以i变成1

在算术和逻辑表达式里,bool 都将被转为 int,在这种转换之后得到的值上进行各种算术和逻辑运算。如果结果又被转回 bool,那么 0 将转为 false,所有非零值都转为 true

    void g()
    {
        bool a = true;
        bool b = true;

        bool x = a + b;    // a + b是2,所以x变成true
        bool y = a | b;    // a | b是1,所以y变成true
    }

指针也可以隐式地转换到 bool(C.6.2.5节),非零指针转为 true,具有零值的指针转为 false

🔚